import test from 'tape';
import $, {上下, 左右, 包圍, 整體} from '../src/Cangjie5Rules';

const 日 = $('a'),
      月 = $('b'),
      金 = $('c'),
      木 = $('d'),
      水 = $('e'),
      火 = $('f'),
      土 = $('g'),
      竹 = $('h'),
      心 = $('p'),
      尸 = $('s'),
      口 = $('r'),
      山 = $('u'),
      田 = $('w'),
      昌 = $('aa'),
      明 = $('ab'),
      目 = $('bu'),
      林 = $('dd'),
      森 = $('ddd'),
      相 = $('dbu'),
      想 = $('dup'),
      沐 = $('ed'),
      洼 = $('egg'),
      圭 = $('gg'),
      志 = $('gp'),
      禾 = $('hd'),
      和 = $('hdr'),
      回 = $('wr'),
      思 = $('wp');

test('上下結構', t => {
  t.equal(上下(日, 日)(), 昌());
  t.equal(上下(土, 土)(), 圭());
  t.equal(上下(土, 心)(), 志());
  t.equal(上下(田, 心)(), 思());
  t.equal(上下(相, 心)(), 想());
  t.equal(上下(木, 林)(), 森());
  t.end();
});

test('左右結構', t => {
  t.equal(左右(日, 月)(), 明());
  t.equal(左右(木, 木)(), 林());
  t.equal(左右(水, 木)(), 沐());
  t.equal(左右(水, 圭)(), 洼());
  t.equal(左右(木, 目)(), 相());
  t.equal(左右(禾, 口)(), 和());
  t.end();
});

test('嵌套組合結構', t => {
  t.equal(左右(木, 上下(水, 木))(), 'ded');
  t.equal(左右(木, 上下(左右(水, 金), 木))(), 'decd');
  t.equal(左右(水, 整體(尸, 竹, 金))(), 'eshc');
  t.equal(上下(左右(水, 整體(尸, 竹, 金)), 木)(), 'ecd');
  t.equal(左右(木, 上下(左右(水, 整體(尸, 竹, 金)), 木))(), 'decd');
  t.end();
});
